package com.itany.thread.test01;

public class Test05 {
	public static void main(String[] args) {
		Ticket ticket = new Ticket();
		Thread t1 = new Thread(ticket,"窗口1");
		Thread t2 = new Thread(ticket,"窗口2");
		Thread t3 = new Thread(ticket,"窗口3");
		t1.start();
		t2.start();
		t3.start();
		// 此时可以发现,出现了非正常票号,0和-1
		// 假设此时售票到最后一张,票号为1
		// 第一个线程开始售票,判断票号,票号大于0满足条件,可以售票
		// 此时第一个线程休眠,第二个线程开始售票
		// 由于第一个线程并没有出票,因此此时的票号依然为1大于0,可以售票
		// 此时第二个线程休眠,第三个线程开始售票
		// 由于第二个线程并没有出票,因此此时的票号依然为1大于0,可以售票
		// 第三个线程休眠,第一个线程休眠结束开始出票
		// 出票之后票号-1,此时的票号为0
		// 第二个线程开始出票,由于第一个线程出完票了
		// 且第二个线程已经判断过了,直接出票,因此,票号为0
		// 同理,第三个线程出票,票号为-1
	}
}
